include("util.js");
include("message.js");

var karotz_ip="localhost";

if(instanceName == "config"){
    karotz_ip = "192.168.1.73";
}

var ligne = params[instanceName].ligne;
var arret = params[instanceName].arret;
var terminus = params[instanceName].terminus;

/**
 * Create an url to get schedule informations
 */
var createRestUrl = function(arret, ligne, terminus){
    var ws = 'https://open.tan.fr/ewp/horairesarret.json/'+arret+'/'+ligne+'/'+terminus
    log("webservice : "+ws);
    return ws;
}

/**
 * Listner when the top button is pressed
 */
var buttonListener = function(event) {
    if ((event=='SIMPLE') || (event=='DOUBLE')) {
        exit();
    }
}


/**
 *retourne une phrase contenant l'heure du prochain bus
 */
var getNextBus = function(){
    var currentTime = new Date();
    var res = "";    
    var horaireObject = new Object();
    horaireObject.ligne = ligne;

    
    try{
        var data = eval('('+http.get(createRestUrl(arret, ligne, terminus))+')');
 
        horaireObject.heure = removeH(data.prochainsHoraires[0].heure);
        horaireObject.minutes = data.prochainsHoraires[0].passages[0];
        horaireObject.libelleArret = data.arret.libelle;
        horaireObject.typeTransport = typeOfTransport(ligne);
        if(terminus == 1){
            horaireObject.terminus = data.ligne.directionSens1;
        }
        if(terminus == 2){
            horaireObject.terminus = data.ligne.directionSens2;
        }
        
        res = karotz.message(lbl_prochain_bus_today, [horaireObject.typeTransport, horaireObject.terminus, horaireObject.libelleArret, horaireObject.heure, horaireObject.minutes]);                    
    
    
    }catch(err){
        res = karotz.message(lbl_erreur, [ligne]);
        log(err);
    }
    return res;
}


/**
 * Retourne le libelle du type de transport
 */
var typeOfTransport = function(ligne){
    if(ligne == '1' || ligne == '2'  || ligne == '3' ){
        return "tramway";
    }else{
        return "bus";
    }
}

/**
 * retire h d'une heure au format *h
 */
var removeH = function(hour){
    var reg = new RegExp('h', 'g');
    var res = hour;
    return res.replace(reg, '');
}
 
 
/**
 * main
 */
var onKarotzConnect = function() {
       
    karotz.led.light("FF11FF");
        
    karotz.tts.start(lbl_consult_horaire, "fr", function(event){
        if(event == "TERMINATED"){
            var currentTime = new Date();
                        
            var message = getNextBus(); 
            var resHoraire = karotz.message(lbl_horaire, [currentTime.getHours(), currentTime.getMinutes(), message]);
            karotz.tts.start(resHoraire, "fr", function(event){
                
                if(event == "TERMINATED"){
                    exit();
                }                    
            });
        }
    });
    
 
    
}

karotz.connectAndStart(karotz_ip, 9123, onKarotzConnect, {});


